Function.prototype.bind = function (context) {
  const fn = this
  const obj = Object.create(context)
  Object.defineProperty(obj, fn.name, {
    get: function () {
      return fn
    }
  })
  return function (...args) {
    return obj[fn.name](args)
  }
}

function aa() {
  console.log(this)
}
var obj = { a: 1 }
var bb = aa.bind(obj)
console.log(bb())
console.log(obj)
